package com.an.pay.client;


import com.an.pay.entity.AliParams;
import com.an.pay.entity.AliRefundParams;
import com.an.pay.service.ali.PcPayService;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.Map;

public class AliPayClient {
    @Autowired
    private PcPayService pcPayService;

    /**
     * 支付宝支付下单
     * @param aliParams 支付宝支付需要的参数
     * @return 返回一个form表单
     */
    public String pay(AliParams aliParams){
        return pcPayService.pay(aliParams);
    }

    /**
     * 支付宝支付成功的异步通知验证参数：根据支付宝规范，除了验证签名，还要验证5个参数
     *         -   out_trade_no：订单号
     *         -   total_amount：金额
     *         -   seller_id:商户PID
     *         -   app_id:appId
     *         -   trade_status:状态是否为 TRADE_SUCCESS
     *
     * @param map 支付宝异步通知传递的参数
     * @param aliParams 我们自己数据可查询的参数
     * @return 返回 success 或 fail
     */
    public String aliPayNotify(Map<String,String> map,AliParams aliParams){
        return pcPayService.aliPayNotify(map,aliParams);
    }

    /**
     *  关闭订单
     * @param orderNo 订单号
     */
    public void closeOrder(String orderNo){
        pcPayService.closeOrder(orderNo);
    }

    /**
     *  查询订单
     * @param orderNo 订单号
     * @return
     */
    public String queryOrder(String orderNo){
        return pcPayService.queryOrderNo(orderNo);
    }


    /**
     *  申请退款
     * @param aliRefundParams : 封装支付宝退款需要的参数
     */
    public String refund(AliRefundParams aliRefundParams){
       return pcPayService.refund(aliRefundParams);
    }

    /**
     * 查询退款
     * @param orderNo 订单号
     * @return
     */
    public String queryRefund(String orderNo){
        return pcPayService.queryRefund(orderNo);
    }

    /**
     *  账单下载
     * @param billDate 时间
     * @param type 账单类型 ：
     *             -   trade ： 业务账单
     *             -   signcustomer ： 账务账单
     * @return 下载地址
     */
    public String downloadBill(String billDate,String type){
        return pcPayService.downloadBill(billDate,type);
    }
}
